#include"friendmodel.hpp"
#include"CommonConnectionPool.hpp"

#include"db.h"

//添加好友关系
void FriendModel::insert(int userid,int friendid)
{
    // 1. 组装sql语句
    char sql[1024] ={0};
    sprintf(sql,"insert into friend values(%d,%d)",userid,friendid);

    shared_ptr<MySQL> mysql = ConnectionPool::getConnectionPool()->getConnection();
    mysql->update(sql);
}

//返回用户好友列表 friendid --> user 表 和 friend 表 联合查询
vector<User> FriendModel::query(int userid)
{
    // 1. 组装sql语句
    char sql[1024] ={0};
     // user 表 和 friend 表 联合查询， 先链接两张表 --》 b.friendid=a.id 找到 friendid 的信息  
    sprintf(sql,
    "select a.id,a.name,a.state from user a join friend b on b.friendid=a.id where b.userid=%d",userid); 

    shared_ptr<MySQL> mysql = ConnectionPool::getConnectionPool()->getConnection();

    vector<User> vec;

    MYSQL_RES * res =mysql->query(sql);
    if(res != nullptr)
    {
        MYSQL_ROW row;
        //把userid 用户的所有离线消息 都放入 vec中
        while ((row = mysql_fetch_row(res)) != nullptr)
        {
            User user;
            user.setId(atoi(row[0]));
            user.setName(row[1]);
            user.setState(row[2]);
            vec.push_back(user);
        }//不断得拿

        //释放资源
        mysql_free_result(res);  
    }

    return vec; 
}